package setup

import (
	"cld-quick-cli/config"
	"cld-quick-cli/database"
	"cld-quick-cli/logs"
	"cld-quick-cli/pkg"
	"github.com/go-redis/redis"
	"github.com/jmoiron/sqlx"
	"go.uber.org/zap"
)

var err error

// RedisDB redis 实例对象
var RedisDB *redis.Client

// MysqlDB mysql 实例对象
var MysqlDB *sqlx.DB

// logger 日志实例对象！
var logger *zap.Logger

// init 项目启动器函数！
func init() {
	/*
		初始化日志
	*/
	logger, err = logs.InitLogger()
	if err != nil {
		panic(err.Error())
	}
	// 替换全局的	zap.L() => logger
	zap.ReplaceGlobals(logger)
	/*
		连接 redis
	*/
	RedisDB, err = database.InitRedisDB()
	if err != nil {
		logger.Fatal(err.Error())
	}
	/*
		连接 mysql
	*/
	MysqlDB, err = database.InitSqlxDB()
	if err != nil {
		zap.L().Fatal(err.Error())
	}
	/*
		初始化翻译器！
	*/
	err = pkg.InitLocaleTrans("zh")
	if err != nil {
		zap.L().Fatal(err.Error())
	}
	/*
		初始化 雪花id 引擎~
	*/
	err = pkg.InitSnowflake(config.Config.App.OnlineTime, config.Config.MachineID)
	if err != nil {
		zap.L().Fatal(err.Error())
	}
}
